<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    let arr = ['张三','李四','王五']
    console.log(arr);//如果原型里面有Symbol,iterator就可以循环
    
    // for ... of...
    // 值
    for (let val of arr){
        console.log(val);
    }
    // 索引
    for (var key in arr){
        console.log(key);
    }

    //获取迭代器
    // let iter = arr[Symbol.iterator]();
    // console.log(iter);//Array Iterator
    // console.log(iter.next());//'张三'

    // function myIterator(arr){
    //     let num = 0;//num这里应该是有闭包了
    //     return{
    //         next(){
    //             return {
    //                 value:arr[num++],
    //                 done:num>arr.length?true:false
    //             }
    //         }
    //     }
    // }
    // let res = myIterator(arr)
    // console.log(res.next());
    // console.log(res.next());
    // console.log(res.next());

    // // set 和 map迭代
    // let set = new Set([1,2]);
    // console.log(set);
    // for(let val of set){
    //     console.log(val);
    // }
    // let map = new Map([['张三','name'],['李四','name']])
    // console.log(map);
    // //只有一个的话会打印数组
    // for(let val of map){
    //     console.log(val);
    // }
    // //用这个可以对打印的数组做一次解构
    // for(let [key,val] of map){
    //     console.log(key,val);
    // }
    </script>
</body>
</html>